/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package org.cip.esymons.general.be;

import java.io.Serializable;
import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
//import javax.persistence.NamedQueries;
//import javax.persistence.NamedQuery;
import javax.persistence.Table;
import javax.persistence.Transient;
import org.cip.esymons.general.util.Utiles;

/**
 *
 * @author ADMINISTRADOR
 */
@Entity
@Table(name = "gen_direccion_persona")
//@NamedQueries({@NamedQuery(name = "DireccionPersona.findAll", query = "SELECT d FROM DireccionPersona d"), @NamedQuery(name = "DireccionPersona.findByDpeCodigo", query = "SELECT d FROM DireccionPersona d WHERE d.dpeCodigo = :dpeCodigo"), @NamedQuery(name = "DireccionPersona.findByDpeDireccion", query = "SELECT d FROM DireccionPersona d WHERE d.dpeDireccion = :dpeDireccion"), @NamedQuery(name = "DireccionPersona.findByDpenombreZona", query = "SELECT d FROM DireccionPersona d WHERE d.dpenombreZona = :dpenombreZona"), @NamedQuery(name = "DireccionPersona.findByDpeReferencia", query = "SELECT d FROM DireccionPersona d WHERE d.dpeReferencia = :dpeReferencia")})
public class DireccionPersona implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Basic(optional = false)
    @Column(name = "dpe_codigo")
    private Long dpeCodigo;
    @Basic(optional = false)
    @Column(name = "dpe_direccion")
    private String dpeDireccion;
    @Column(name = "dpe_nombreZona")
    private String dpenombreZona;
    @Column(name = "dpe_referencia")
    private String dpeReferencia;
    @Column(name = "dpe_nro")
    private Integer dpeNro;
    @Column(name = "dpe_interior")
    private String dpeInterior;
    @Column(name = "dpe_manzana")
    private String dpeManzana;
    @Column(name = "dpe_lote")
    private String dpeLote;
    @Column(name = "dpe_piso")
    private Integer dpePiso;
    @Column(name = "dpe_dpto")
    private String dpeDpto;
    @Column(name = "dpe_sector")
    private String dpeSector;
    @Column(name = "dpe_etapa")
    private String dpeEtapa;
    @Column(name = "dpe_activo")
    private Boolean dpeActivo;

    @JoinColumn(name = "zona_codigo", referencedColumnName = "zon_codigo")
    @ManyToOne(fetch = FetchType.LAZY)
    private TipoZona zonaCodigo;
    
    @JoinColumn(name = "via_codigo", referencedColumnName = "via_codigo")
    @ManyToOne(fetch = FetchType.LAZY)
    private Via viaCodigo;
    @JoinColumn(name = "sol_codigo", referencedColumnName = "sol_codigo")
    @ManyToOne(optional = false, fetch = FetchType.LAZY)
    private Solicitante solCodigo;
    @JoinColumn(name = "dis_codigo", referencedColumnName = "dis_codigo")
    @ManyToOne(optional = false, fetch = FetchType.LAZY)
    private Distrito disCodigo;


    @Transient
    private ConsejoDepartamental consejo;

    public ConsejoDepartamental getConsejo() {
        return consejo;
    }

    public void setConsejo(ConsejoDepartamental consejo) {
        this.consejo = consejo;
    }

    public DireccionPersona() {
    }

    public DireccionPersona(Long dpeCodigo) {
        this.dpeCodigo = dpeCodigo;
    }

    public DireccionPersona(Long dpeCodigo, String dpeDireccion) {
        this.dpeCodigo = dpeCodigo;
        this.dpeDireccion = dpeDireccion;
    }

    public Long getDpeCodigo() {
        return dpeCodigo;
    }

    public void setDpeCodigo(Long dpeCodigo) {
        this.dpeCodigo = dpeCodigo;
    }

    public String getDpeDireccion() {
        return dpeDireccion;
    }

    public void setDpeDireccion(String dpeDireccion) {
        this.dpeDireccion = dpeDireccion;
    }

    public String getDireccionPersona() {
        String nombreZona = (dpenombreZona != null) ? dpenombreZona : "";
        String nombreEtapa = (dpeEtapa != null) ? dpeEtapa : "";
        String nombreSector = (dpeSector != null) ? dpeSector : "";
        String nombreManzana = (dpeManzana != null) ? dpeManzana : "";
        String nombreLote = (dpeLote != null) ? dpeLote : "";
        String nombreNro = (dpeNro != null) ? Utiles.aCadena(dpeNro) : "";
        String nombrePiso = (dpePiso != null) ? Utiles.aCadena(dpePiso) : "";
        String nombreInterior = (dpeInterior != null) ? dpeInterior : "";
        String nombreDpto = (dpeDpto != null) ? dpeDpto: "";
        String nombreReferencia = (dpeReferencia != null) ? dpeReferencia : "";

        String direccionPersona = dpeDireccion + " " + nombreZona + " ";
        direccionPersona += nombreEtapa + " " + nombreSector + " " + nombreManzana + " ";
        direccionPersona += nombreLote + " " + nombreNro + " " + nombrePiso + " ";
        direccionPersona += nombreInterior + " " + nombreDpto + " " + nombreReferencia;
        return direccionPersona;
    }

    //creado y usado x ingrid-no borrar
    public String getDireccion() {
        String direcc = (dpeDireccion!=null) ? dpeDireccion+" ":"";
        String tipozona=(getZonaCodigo()!=null) ? getZonaCodigo().getZonNombre()+" ":"";
        String nomzona=(dpenombreZona != null) ? dpenombreZona+" " : "";
        String dist=(getDisCodigo()!=null) ? getDisCodigo().getDisNombre()+" ":"";
        String prov="";
        String depa="";
        if(getDisCodigo()!=null){
            prov=getDisCodigo().getProCodigo().getProNombre()+" ";
            depa=getDisCodigo().getProCodigo().getDepCodigo().getDepNombre();
        }
        String dircompleta=direcc+tipozona+nomzona+dist+prov+depa;
        return dircompleta;
    }

    public String getDpenombreZona() {
        return dpenombreZona;
    }

    public void setDpenombreZona(String dpenombreZona) {
        this.dpenombreZona = dpenombreZona;
    }

    public String getDpeReferencia() {
        return dpeReferencia;
    }

    public void setDpeReferencia(String dpeReferencia) {
        this.dpeReferencia = dpeReferencia;
    }

    public TipoZona getZonaCodigo() {
        return zonaCodigo;
    }

    public void setZonaCodigo(TipoZona zonaCodigo) {
        this.zonaCodigo = zonaCodigo;
    }

    public Via getViaCodigo() {
        return viaCodigo;
    }

    public void setViaCodigo(Via viaCodigo) {
        this.viaCodigo = viaCodigo;
    }

    public Solicitante getSolCodigo() {
        return solCodigo;
    }

    public void setSolCodigo(Solicitante solCodigo) {
        this.solCodigo = solCodigo;
    }

    public Distrito getDisCodigo() {
        return disCodigo;
    }

    public void setDisCodigo(Distrito disCodigo) {
        this.disCodigo = disCodigo;
    }

    public String getNombreDistrito() {
        return (disCodigo != null) ? disCodigo.getDisNombre() : "-------";
    }

    public String getNombreVia() {
        return (viaCodigo != null) ? viaCodigo.getViaNombre() : "-------";
    }
    
    public String getNombreZona() {
        return (zonaCodigo != null) ? zonaCodigo.getZonNombre() : "-------";
    }
    
    public String getDpeDpto() {
        return dpeDpto;
    }

    public void setDpeDpto(String dpeDpto) {
        this.dpeDpto = dpeDpto;
    }

    public String getDpeEtapa() {
        return dpeEtapa;
    }

    public void setDpeEtapa(String dpeEtapa) {
        this.dpeEtapa = dpeEtapa;
    }

    public String getDpeInterior() {
        return dpeInterior;
    }

    public void setDpeInterior(String dpeInterior) {
        this.dpeInterior = dpeInterior;
    }

    public String getDpeLote() {
        return dpeLote;
    }

    public void setDpeLote(String dpeLote) {
        this.dpeLote = dpeLote;
    }

    public String getDpeManzana() {
        return dpeManzana;
    }

    public void setDpeManzana(String dpeManzana) {
        this.dpeManzana = dpeManzana;
    }

    public Integer getDpeNro() {
        return dpeNro;
    }

    public void setDpeNro(Integer dpeNro) {
        this.dpeNro = dpeNro;
    }

    public Integer getDpePiso() {
        return dpePiso;
    }

    public void setDpePiso(Integer dpePiso) {
        this.dpePiso = dpePiso;
    }

    public String getDpeSector() {
        return dpeSector;
    }

    public void setDpeSector(String dpeSector) {
        this.dpeSector = dpeSector;
    }

//    public String getDireccionGeneral(){
//
//        String direccion = null;
//
//        if(getDpeDireccion()==null) {
//            setDpeDireccion("");
//        }
//        direccion = getDpeDireccion();
//        if(getDpeDpto()!=null){
//            String dpto  = getDpeDpto();
//            setDpeDpto("Dpto."+dpto);
//        }else{
//            setDpeDpto("");
//        }
//        direccion += " " + getDpeDpto();
//        if(getDpePiso()!=null){
//            Integer piso = getDpePiso();
//            setDpePiso(piso);
//        }else{
//            setDpePiso(null);
//        }
//        direccion += " Piso " + getDpePiso();
//        if(getDpeNro()!=null){
//            Integer numero = getDpeNro();
//            setDpeNro(numero);
//        }else{
//            setDpeNro(null);
//        }
//        direccion += " Nro. " + getDpeNro();
//        if (getDpenombreZona()==null) {
//            setDpenombreZona("");
//        }
//        direccion += " " + getDpenombreZona();
//        if(getDpeManzana()!= null){
//            String manzana = getDpeManzana();
//            setDpeManzana("Mz."+manzana);
//        }
//        direccion += " " + getDpeManzana();
//        if(getDpeLote()!=null){
//            String lote = getDpeLote();
//            setDpeLote("Lt."+lote);
//        }else{
//            setDpeLote("");
//        }
//        direccion += " " + getDpeLote();
//        if(getDpeEtapa()!=null){
//            String etapa = getDpeEtapa();
//            setDpeEtapa("Et."+etapa);
//        }else{
//            setDpeEtapa("");
//        }
//        direccion += " " + getDpeEtapa();
//        if(getDpeSector()!=null){
//            String sector = getDpeSector();
//            setDpeSector("Sec."+sector);
//        }else{
//            setDpeSector(" ");
//        }
//        direccion += " " + getDpeSector();
//        return direccion;
//    }

    public String getDireccionGeneral() {
        String direccionPersona = "";
        if (getDpeDireccion() != null) {
            if (Utiles.validarStrings(getDpeDireccion()))
                direccionPersona = getDpeDireccion() + " ";
        }
        if (getDpeDpto() != null) {
            if (Utiles.validarStrings(getDpeDpto()))
                direccionPersona += "Dpto: " + getDpeDpto() + " ";
        }
        if (getDpePiso() != null) {
            direccionPersona += "Piso: " + getDpePiso() + " ";
        }
        if (getDpeNro() != null) {
            direccionPersona += "Nro: " + getDpeNro() + " ";
        }
        if (getDpenombreZona() != null) {
            if (Utiles.validarStrings(getDpenombreZona()))
                direccionPersona += "Zona: " + getDpenombreZona() + " ";
        }
        if (getDpeManzana() != null) {
            if (Utiles.validarStrings(getDpeManzana()))
                direccionPersona += "Mz: " + getDpeManzana() + " ";
        }
        if (getDpeLote() != null) {
            if (Utiles.validarStrings(getDpeLote()))
                direccionPersona += "Lote: " + getDpeLote() + " ";
        }
        if (getDpeEtapa() != null) {
            if (Utiles.validarStrings(getDpeEtapa()))
                direccionPersona += "Etapa: " + getDpeEtapa() + " ";
        }
        if (getDpeSector() != null) {
            if (Utiles.validarStrings(getDpeSector()))
                direccionPersona += "Sector: " + getDpeSector();
        }
        return direccionPersona;
    }

    public Boolean getDpeActivo() {
        return dpeActivo;
    }

    public void setDpeActivo(Boolean dpeActivo) {
        this.dpeActivo = dpeActivo;
    }
   

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (dpeCodigo != null ? dpeCodigo.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof DireccionPersona)) {
            return false;
        }
        DireccionPersona other = (DireccionPersona) object;
        if ((this.dpeCodigo == null && other.dpeCodigo != null) || (this.dpeCodigo != null && !this.dpeCodigo.equals(other.dpeCodigo))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "org.cip.esymons.general.be.DireccionPersona[dpeCodigo=" + dpeCodigo + "]";
    }

    @Transient
    TelefonoSolicitante telefono;

    public TelefonoSolicitante getTelefono() {
        return telefono;
    }

    public void setTelefono(TelefonoSolicitante telefono) {
        this.telefono = telefono;
    }

    @Transient
    TelefonoSolicitante celular;

    public TelefonoSolicitante getCelular() {
        return celular;
    }

    public void setCelular(TelefonoSolicitante celular) {
        this.celular = celular;
    }

    @Transient
    ColegiadoEspecialidad colEspecialidad;

    public ColegiadoEspecialidad getColEspecialidad() {
        return colEspecialidad;
    }

    public void setColEspecialidad(ColegiadoEspecialidad colEspecialidad) {
        this.colEspecialidad = colEspecialidad;
    }

    @Transient
    PersonaNatural persona;

    public PersonaNatural getPersona() {
        return persona;
    }

    public void setPersona(PersonaNatural persona) {
        this.persona = persona;
    }

    

}
